跳到主要内容

数据的查询(SELECT)

除了向表中插入文章年以外,查询数据同样也是关系型数据管理的重要一环,体现到应用程序上面,便是我们将文章自数据库中提取出来,并将其呈现给用户。

沿用之前我们所使用的 article 表,假定我们希望将表中的全部数据提取出来,则可以书写如下的代码:

/*
自 article 表中查询全部的数据记录
*/
SELECT * FROM article;
提示

慎用 SELECT * 这样的写法
对于规模庞大,结构复杂的数据表而言,这种直接取出全部数据记录的做法,既造成巨量资源浪费,往往又难以满足应用的真实需要,因此并不合适。 我们的建议是根据“适用“的原则来书写 SELECT 语句,即依照应用程序需要多少数据,需要哪方面的数据来对查询语句进行设计,进而写出真正好的 SQL 查询来。

一般而言,查询的结果将会按照表格的形式进行呈现,如图:

SELECT-RESULT

而如果我们仅仅希望查询表格数据的某一部分(如文章的标题),则可以书写如下的语句:

/*
查询全部的文章标题
*/
SELECT title FROM article;

但是在现实应用中,这种取出全部记录的方法,依旧会给 PostgreSQL 带来很大负担,这就需要我们对符合条件的数据记录进行一些限制,WHERE 语句充当了这个角色,参考下面的部分。

为查询加上限制条件:WHERE 语句

WHERE 语句需要同 SELECT 等语句结合使用,进而限制某项操作所影响到的范围,它的基本形式如下:

基本操作语句 WHERE 逻辑表达式

逻辑表达式即对于数据的逻辑操作,如匹配(=),大于(>)乃至于一些复合操作(与,或,非),而得出的最终结果被称为布尔值,即真、假,而当 WHERE 带着布尔表达式同 SELECT 结合以后,我们就可以完成很多日常应用中所需要的操作。

案例:查询 id = 1 的文章标题与内容

许多的应用(如 AtomGit)都会在链接上面做文章(注意到链接中的"org", "zouxiangneihe", "discussions", "548"),由此在数据库中查找到对应的数据,构建页面供用户查看。

AtomGit-Article

在这里,我们进行简化,就编写一条自文章表中查询 id = 1 的 SQL 语句,结合 WHERE,我们可以书写出如下的代码:

/*
自 article 表中查询 id = 1 的文章标题与内容
*/
SELECT title, content FROM article WHERE id = 1;